久久久久久久久精品一区二区三区-狠狠婷婷亚洲中文综合久久A-精品99日产一卡2卡三卡4-五月天中文字幕mv在线

頂部圖片
022-23715128

聯(lián)系方式

CONTACT
  • 公眾號(hào)
    新浪微博
  • 中國(guó) ● 天津

    聯(lián)系地址:天津市西青區(qū)華鼎高科技發(fā)展中心

  • 公司座機(jī):022-23715128

    24小時(shí)熱線:15522534786

    聯(lián)系QQ:2085429559

    公司郵箱:gvt@techlego.com

當(dāng)前位置: 首頁(yè) > 新聞資訊 > 行業(yè)新聞 >
新聞資訊NEWS

日期:2024-07-12 15:27 瀏覽次數(shù): 作者:來(lái)高科技
如何通過(guò)SDK獲取兩個(gè)坐標(biāo)系之間的旋轉(zhuǎn)矩陣和平移向量 分享到:

 

在三維掃描應(yīng)用中,獲取兩個(gè)坐標(biāo)系之間的旋轉(zhuǎn)矩陣和平移向量是一項(xiàng)至關(guān)重要的技術(shù)。它不僅用于將不同視角下的掃描數(shù)據(jù)準(zhǔn)確對(duì)齊,還在多設(shè)備數(shù)據(jù)拼接融合、幾何校準(zhǔn)、機(jī)器人控制和場(chǎng)景理解等方面發(fā)揮著關(guān)鍵作用。通過(guò)準(zhǔn)確的坐標(biāo)轉(zhuǎn)換和對(duì)齊,可以大地提高三維掃描數(shù)據(jù)的精度和實(shí)用性,從而在多個(gè)領(lǐng)域中實(shí)現(xiàn)更準(zhǔn)確的測(cè)量和提升分析效率。

計(jì)算兩個(gè)坐標(biāo)系之間的旋轉(zhuǎn)矩陣和平移向量的函數(shù)原型如下:

double get_rt_by_pt_pairs(const pos3f* pts1, const pos3f* pts2, int total, double m[3][3], double t[3]);

參數(shù)pts1為坐標(biāo)系1下的點(diǎn)坐標(biāo)

參數(shù)pts2 為坐標(biāo)系2下的點(diǎn)坐標(biāo)

參數(shù)total 為配對(duì)點(diǎn)的數(shù)量

參數(shù)double m[3][3] 為計(jì)算后的旋轉(zhuǎn)矩陣

參數(shù)double t[3] 為計(jì)算后的平移向量

1

定義一個(gè)坐標(biāo)系數(shù)組

2

定義一個(gè)空的坐標(biāo)系數(shù)組

3

定義一個(gè)旋轉(zhuǎn)矩陣和平移向量

4

計(jì)算坐標(biāo)一經(jīng)過(guò)旋轉(zhuǎn)平移后的坐標(biāo)系2 

5

計(jì)算兩個(gè)坐標(biāo)系之間的旋轉(zhuǎn)矩陣和平移向量并輸出

以上我們完成了獲取兩個(gè)坐標(biāo)系之間的旋轉(zhuǎn)矩陣和平移向量的操作,有了這個(gè)功能就能夠有效地解決數(shù)據(jù)對(duì)齊、誤差校正和坐標(biāo)變換等多方面的問(wèn)題。這不僅提升了掃描數(shù)據(jù)的精度和可靠性,還為項(xiàng)目高效推進(jìn)提供了強(qiáng)有力的支持。

源代碼

int  main()

{

//通過(guò)IP端口創(chuàng)建協(xié)議

auto protocol = techlego::create_binary_protocol(L"localhost", 5252);

//通過(guò)協(xié)議創(chuàng)建客戶端

auto client = techlego::h_scan3d_client::make_shared(protocol);

//坐標(biāo)系1下的點(diǎn)坐標(biāo)

std::array<techlego::pos3f, 4>points1 = {

{ {-65.4562 ,-54.4644,378.7092},

{-65.3003 ,-54.4709 ,378.7567},

{-15.7148 ,-14.9020,380.3256 },

{-65.2903 ,- 54.4111 ,378.7333} } };

//坐標(biāo)系2下的點(diǎn)坐標(biāo)

std::array<techlego::pos3f, 4>points2 = {};

// 構(gòu)建繞Z軸旋轉(zhuǎn)45度的旋轉(zhuǎn)矩陣

Eigen::AngleAxisd angle_axis(M_PI / 4, Eigen::Vector3d(0, 0, 1));

Eigen::Matrix3d m = angle_axis.toRotationMatrix();

// 構(gòu)建平移向量

Eigen::Vector3d translate_vector(1, 3, 4);

// 對(duì)坐標(biāo)系1中的點(diǎn)應(yīng)用之前構(gòu)建的旋轉(zhuǎn)矩陣和平移向量,得到坐標(biāo)系2下的該點(diǎn)

for (int i = 0; i < points1.size(); i++)

{

// 用變換矩陣對(duì)坐標(biāo)進(jìn)行變換

// 點(diǎn)在坐標(biāo)系1下坐標(biāo)

Eigen::Vector3d point(points1[i].m_x, points1[i].m_y, points1[i].m_z);

// 變換,相當(dāng)于【旋轉(zhuǎn)矩陣*坐標(biāo)+平移向量】

Eigen::Vector3d point_after_trans = m * point + translate_vector;

std::cout << "變換后的坐標(biāo)為:" << std::endl << point_after_trans.transpose() << std::endl;

points2[i].m_x = point_after_trans(0);

points2[i].m_y = point_after_trans(1);

points2[i].m_z = point_after_trans(2);

}

//輸入,配對(duì)點(diǎn)的數(shù)量

int total = static_cast<int>(points1.size());

//輸出,旋轉(zhuǎn)矩陣

//輸出,平移向量

double mm[3][3] = { 0 }, t[3] = { 0 };

//由點(diǎn)對(duì)獲取坐標(biāo)系1變換到坐標(biāo)系2下的旋轉(zhuǎn)矩陣和平移向量

auto pairs = techlego::am::get_rt_by_pt_pairs(points2.data(), points1.data(), total, mm, t);

std::cout << "原旋轉(zhuǎn)矩陣:\n" << m << "\n";

std::cout << "原平移向量:" << translate_vector.transpose()  << "\n";

std::cout << "解得的旋轉(zhuǎn)矩陣:";

for (int i = 0; i < 3; i++)

{

for (int j = 0; j < 3; j++)

{

std::cout << " " << mm[i][j] << '\t';

}

std::cout << std::endl;

}

std::cout << "解得的平移向量:";

for (int i = 0; i < 3; i++)

{

std::cout << t[i] << " ";

}

std::cout << "\n各個(gè)點(diǎn)對(duì)距離的平方和:" << pairs << std::endl;

return 0;

}

 

 
 

官網(wǎng)視頻號(hào)·點(diǎn)擊視頻·關(guān)注我們

 


 

經(jīng)典案例

 

多機(jī)聯(lián)動(dòng)掃描系統(tǒng)助力嫦娥五號(hào)構(gòu)建月表地形

 

噴漆自動(dòng)化三維視覺全流程

 

混凝土立方試塊尺寸三維檢測(cè)全流程

↙“點(diǎn)擊下方”查看更多精彩內(nèi)容

  • 上一篇:優(yōu)化導(dǎo)入:構(gòu)建高效點(diǎn)云數(shù)據(jù)處理工作流
  • 下一篇:光源亮度可調(diào)性:優(yōu)化三維掃描數(shù)據(jù)質(zhì)量
  • 相關(guān)推薦 NEWS More>